AWS CLI এবং SDK দিয়ে অটোমেশন হলো Amazon Web Services (AWS) এর বিভিন্ন সেবা যেমন EC2, S3, RDS, IAM ইত্যাদি সহজভাবে পরিচালনা এবং কনফিগার করার জন্য একটি শক্তিশালী পদ্ধতি। AWS CLI এবং AWS SDK ব্যবহার করে আপনি AWS এর বিভিন্ন কার্যক্রম অটোমেট করতে পারেন, যেমন রিসোর্স তৈরি, ম্যানেজমেন্ট, এবং ডিপ্লয়মেন্ট। নিচে AWS CLI এবং SDK এর মাধ্যমে অটোমেশন করার বিস্তারিত ব্যাখ্যা দেওয়া হলো।
AWS CLI হল একটি কমান্ড-লাইন টুল, যার মাধ্যমে আপনি আপনার AWS অ্যাকাউন্টে বিভিন্ন কাজ পরিচালনা করতে পারেন। এটি একটি শক্তিশালী অটোমেশন টুল যা স্ক্রিপ্টিং ও রিমোট অ্যাক্সেসের জন্য ব্যবহার করা হয়। AWS CLI দিয়ে আপনি বিভিন্ন রিসোর্স পরিচালনা যেমন EC2 ইনস্ট্যান্স স্টার্ট করা, S3 বকেট তৈরি করা, RDS ডাটাবেস ম্যানেজ করা ইত্যাদি কাজ করতে পারেন।
AWS CLI কনফিগারেশন: AWS CLI কনফিগার করতে, নিচের কমান্ডটি রান করুন এবং আপনার AWS অ্যাকাউন্টের Access Key ও Secret Key প্রদান করুন:
aws configure
এটি আপনাকে নিম্নলিখিত তথ্য প্রদান করতে বলবে:
us-west-1
, us-east-2
)json
, text
)EC2 ইনস্ট্যান্স স্টার্ট করা:
aws ec2 start-instances --instance-ids i-1234567890abcdef0
S3 বকেট তৈরি করা:
aws s3 mb s3://my-new-bucket
RDS ডাটাবেস ইন্সট্যান্স তৈরি করা:
aws rds create-db-instance --db-instance-identifier mydb --allocated-storage 20 --db-instance-class db.t2.micro --engine mysql --master-username admin --master-user-password mypassword
AWS SDK হল একটি লাইব্রেরি যা আপনার কোডে AWS সেবাগুলির সাথে যোগাযোগ করতে ব্যবহৃত হয়। এটি বিভিন্ন প্রোগ্রামিং ভাষায় উপলব্ধ, যেমন Python (Boto3), Java, Node.js, C# ইত্যাদি। SDK দিয়ে আপনি কোডের মাধ্যমে AWS রিসোর্স তৈরি, কনফিগার এবং ম্যানেজ করতে পারেন।
Python SDK (Boto3) ইনস্টল: Python এ AWS SDK ব্যবহারের জন্য Boto3 লাইব্রেরি ইনস্টল করতে হবে:
pip install boto3
Boto3 কনফিগারেশন: আপনি AWS CLI কনফিগার করার মতো করে, Boto3 কনফিগার করতে পারেন:
aws configure
অথবা আপনি কোডের মধ্যে Access Key এবং Secret Key সরাসরি প্রদান করতে পারেন।
EC2 ইনস্ট্যান্স তৈরি করা (Python):
import boto3
ec2 = boto3.resource('ec2')
instances = ec2.create_instances(
ImageId='ami-0abcdef1234567890',
MinCount=1,
MaxCount=1,
InstanceType='t2.micro'
)
print(instances)
S3 বকেট তৈরি করা (Python):
import boto3
s3 = boto3.client('s3')
s3.create_bucket(Bucket='my-new-bucket')
RDS ডাটাবেস ইন্সট্যান্স তৈরি করা (Python):
import boto3
rds = boto3.client('rds')
response = rds.create_db_instance(
DBInstanceIdentifier='mydb',
AllocatedStorage=20,
DBInstanceClass='db.t2.micro',
Engine='mysql',
MasterUsername='admin',
MasterUserPassword='mypassword'
)
print(response)
AWS CloudFormation হল একটি অটোমেশন টুল যা AWS রিসোর্সের ইনফ্রাস্ট্রাকচার কনফিগারেশনের জন্য ব্যবহার করা হয়। আপনি CloudFormation templates ব্যবহার করে আপনার পুরো ইনফ্রাস্ট্রাকচার এককভাবে তৈরি এবং কনফিগার করতে পারেন। এটি বিশেষভাবে বড় প্রকল্পগুলির জন্য উপযুক্ত যেখানে বহু রিসোর্স ম্যানেজ করা হয়।
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: my-cloudformation-bucket
এটি একটি S3 বকেট তৈরি করার জন্য CloudFormation টেমপ্লেটের উদাহরণ। আপনি এই YAML বা JSON ফরম্যাটে আরও রিসোর্স কনফিগারেশন করতে পারেন এবং একবার কমান্ড ব্যবহার করে পুরো ইনফ্রাস্ট্রাকচার তৈরি করতে পারবেন।
এই সব টুল এবং পদ্ধতির মাধ্যমে আপনি AWS-এ কার্যক্রমগুলো অটোমেট করতে পারবেন এবং রিসোর্স ম্যানেজমেন্টকে সহজ এবং কার্যকরী করতে পারবেন।
AWS CLI দিয়ে RDS পরিচালনা:
AWS Command Line Interface (CLI) আপনাকে AWS সেবা যেমন RDS (Relational Database Service) পরিচালনা করতে সক্ষম করে, যা কনসোলের তুলনায় স্ক্রিপ্টিং ও অটোমেশন কার্যক্রমের জন্য উপকারী। নিচে RDS-এর বিভিন্ন ব্যবস্থাপনা কাজ AWS CLI দিয়ে কীভাবে করা যায় তা ধাপে ধাপে ব্যাখ্যা করা হয়েছে।
AWS CLI কনফিগারেশন করুন: AWS CLI কনফিগার করার জন্য আপনার Access Key এবং Secret Access Key প্রয়োজন হবে, যা IAM থেকে পাবেন।
aws configure
এতে আপনাকে নিম্নলিখিত তথ্য দিতে হবে:
us-west-2
)json
)RDS ইনস্ট্যান্স তৈরি করার জন্য, নিচের কমান্ডটি ব্যবহার করুন:
aws rds create-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.t3.micro \
--engine mysql \
--master-username admin \
--master-user-password password123 \
--allocated-storage 20 \
--backup-retention-period 7 \
--no-multi-az \
--vpc-security-group-ids sg-xxxxxxxx
এটি একটি MySQL ডাটাবেস তৈরি করবে, যার নাম mydbinstance
এবং ২০GB স্টোরেজ দেওয়া হবে। আপনি ইন্সট্যান্সের জন্য অন্য সিকিউরিটি গ্রুপ আইডি এবং পাসওয়ার্ড কাস্টমাইজ করতে পারেন।
রিডিং বা ইনস্ট্যান্সের স্ট্যাটাস দেখতে নিচের কমান্ড ব্যবহার করুন:
aws rds describe-db-instances \
--db-instance-identifier mydbinstance
এটি আপনার নির্দিষ্ট db-instance-identifier
এর জন্য সমস্ত তথ্য প্রদান করবে, যেমন স্ট্যাটাস, প্রপার্টি এবং কনফিগারেশন।
যদি আপনি আপনার ডাটাবেসের কনফিগারেশন পরিবর্তন করতে চান (যেমন ইন্সট্যান্সের সাইজ বা অন্যান্য সেটিংস), আপনি নিচের কমান্ডটি ব্যবহার করতে পারেন:
aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.t3.medium \
--apply-immediately
এটি mydbinstance
নামের ডাটাবেস ইন্সট্যান্সের সাইজ পরিবর্তন করবে db.t3.medium
এ। --apply-immediately
দিয়ে আপনি পরিবর্তনগুলির প্রয়োগ তৎক্ষণাৎ করতে পারেন।
RDS ইনস্ট্যান্স ডিলিট করতে নিচের কমান্ডটি ব্যবহার করুন:
aws rds delete-db-instance \
--db-instance-identifier mydbinstance \
--skip-final-snapshot
এটি ইনস্ট্যান্সটি মুছে ফেলবে এবং ফাইনাল স্ন্যাপশট নেবে না। আপনি চাইলে --final-db-snapshot-identifier যুক্ত করে স্ন্যাপশট নিতে পারেন।
RDS Read Replica তৈরি করার জন্য নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
aws rds create-db-instance-read-replica \
--db-instance-identifier mydb-replica \
--source-db-instance-identifier mydbinstance \
--db-instance-class db.t3.medium \
--availability-zone us-west-2b
এটি mydbinstance
এর একটি Read Replica তৈরি করবে mydb-replica
নামে। আপনি ভিন্ন অ্যাভেইলেবিলিটি জোনেও এটি কনফিগার করতে পারেন।
RDS ডাটাবেসের ব্যাকআপ তৈরি করার জন্য:
aws rds create-db-snapshot \
--db-snapshot-identifier mydb-snapshot \
--db-instance-identifier mydbinstance
এটি mydbinstance
থেকে একটি স্ন্যাপশট তৈরি করবে এবং তার নাম হবে mydb-snapshot
।
একটি স্ন্যাপশট পুনরুদ্ধার করার জন্য:
aws rds restore-db-instance-from-db-snapshot \
--db-instance-identifier restored-dbinstance \
--db-snapshot-identifier mydb-snapshot
এটি mydb-snapshot
স্ন্যাপশট থেকে একটি নতুন RDS ইনস্ট্যান্স restored-dbinstance
তৈরি করবে।
AWS CLI দিয়ে RDS পরিচালনা করা সিস্টেম প্রশাসকদের জন্য একটি শক্তিশালী উপায়, বিশেষত যখন একাধিক ইনস্ট্যান্স এবং ডাটাবেস ইন্সট্যান্সের মধ্যে কাজ করতে হয়।
boto3
হলো AWS (Amazon Web Services)-এর Python SDK, যা AWS সেবা ব্যবহার করতে সহায়তা করে। এটি RDS (Relational Database Service) পরিচালনার জন্য API কল করতে এবং বিভিন্ন কাজ অটোমেট করতে সাহায্য করে।
এখানে, আমি boto3
SDK দিয়ে RDS সম্পর্কিত কিছু সাধারণ অটোমেশন স্ক্রিপ্ট উদাহরণ প্রদান করব। এই স্ক্রিপ্টগুলির মাধ্যমে আপনি RDS ইন্সট্যান্স তৈরি, মডিফাই, ব্যাকআপ নেওয়া, এবং অন্য অনেক কার্যক্রম অটোমেট করতে পারবেন।
import boto3
# AWS ক্লায়েন্ট তৈরি করুন
rds = boto3.client('rds')
# RDS ইনস্ট্যান্স তৈরি করার জন্য API কল
response = rds.create_db_instance(
DBName='mydb',
DBInstanceIdentifier='mydbinstance',
DBInstanceClass='db.t3.micro',
Engine='mysql',
MasterUsername='admin',
MasterUserPassword='yourpassword',
AllocatedStorage=20, # GB
VpcSecurityGroupIds=['sg-xxxxxxxx'],
MultiAZ=False, # সেট করতে চাইলে True
PubliclyAccessible=False,
BackupRetentionPeriod=7,
Tags=[
{'Key': 'Name', 'Value': 'MyRDSInstance'}
]
)
print(response)
এখানে আমরা একটি নতুন MySQL ডাটাবেস ইন্সট্যান্স তৈরি করছি। আপনি DBInstanceClass
, AllocatedStorage
, Engine
এবং অন্যান্য কনফিগারেশন ভ্যালু পরিবর্তন করে আপনার প্রয়োজন অনুযায়ী কনফিগারেশন করতে পারেন।
import boto3
# AWS ক্লায়েন্ট তৈরি করুন
rds = boto3.client('rds')
# ডাটাবেস ইন্সট্যান্সের স্ট্যাটাস চেক করা
response = rds.describe_db_instances(
DBInstanceIdentifier='mydbinstance'
)
# স্ট্যাটাস দেখানো
for db_instance in response['DBInstances']:
print(f"DBInstanceIdentifier: {db_instance['DBInstanceIdentifier']}")
print(f"DBInstanceStatus: {db_instance['DBInstanceStatus']}")
এই স্ক্রিপ্টটি আপনার নির্দিষ্ট DB ইন্সট্যান্সের স্ট্যাটাস দেখাবে, যেমন available
, backing-up
, modifying
ইত্যাদি।
import boto3
# AWS ক্লায়েন্ট তৈরি করুন
rds = boto3.client('rds')
# RDS ইন্সট্যান্স মডিফাই করা
response = rds.modify_db_instance(
DBInstanceIdentifier='mydbinstance',
AllocatedStorage=50, # স্টোরেজ বাড়ানো
ApplyImmediately=True
)
print(response)
এই স্ক্রিপ্টটি আপনার ডাটাবেস ইন্সট্যান্সের স্টোরেজ সাইজ বাড়াবে। ApplyImmediately=True
সেট করলে পরিবর্তনটি সঙ্গে সঙ্গে কার্যকর হবে।
import boto3
# AWS ক্লায়েন্ট তৈরি করুন
rds = boto3.client('rds')
# RDS স্ন্যাপশট তৈরি করা
response = rds.create_db_snapshot(
DBSnapshotIdentifier='mydbsnapshot',
DBInstanceIdentifier='mydbinstance'
)
print(response)
এটি আপনার ডাটাবেস ইন্সট্যান্সের একটি স্ন্যাপশট তৈরি করবে, যাতে ভবিষ্যতে ডাটাবেসের অবস্থান পুনরুদ্ধার করতে পারেন।
import boto3
# AWS ক্লায়েন্ট তৈরি করুন
rds = boto3.client('rds')
# RDS ইন্সট্যান্স স্টপ করা
response_stop = rds.stop_db_instance(
DBInstanceIdentifier='mydbinstance'
)
print(f"Stopping DB Instance: {response_stop}")
# RDS ইন্সট্যান্স রিস্টার্ট করা
response_start = rds.start_db_instance(
DBInstanceIdentifier='mydbinstance'
)
print(f"Starting DB Instance: {response_start}")
এই স্ক্রিপ্ট দুটি রিডান্ট ইন্সট্যান্স স্টপ এবং রিস্টার্ট করতে সহায়তা করবে। আপনি একে অটোমেটিকভাবে চালু/বন্ধ করতে পারেন।
import boto3
# AWS ক্লায়েন্ট তৈরি করুন
rds = boto3.client('rds')
# Read Replica তৈরি করা
response = rds.create_db_instance_read_replica(
DBInstanceIdentifier='mydbreadreplica',
SourceDBInstanceIdentifier='mydbinstance',
DBInstanceClass='db.t3.medium',
PubliclyAccessible=False
)
print(response)
এই স্ক্রিপ্টটি একটি Read Replica তৈরি করবে যা মূল ডাটাবেসের ডেটা সিঙ্ক্রোনাইজ করতে সহায়তা করবে এবং রিড ট্রাফিক পরিচালনার জন্য ব্যবহৃত হবে।
import boto3
# AWS ক্লায়েন্ট তৈরি করুন
rds = boto3.client('rds')
# ব্যাকআপ রিটেনশন পরিবর্তন করা
response = rds.modify_db_instance(
DBInstanceIdentifier='mydbinstance',
BackupRetentionPeriod=14, # ব্যাকআপ রিটেনশন দিন
ApplyImmediately=True
)
print(response)
এই স্ক্রিপ্টটি ডাটাবেসের ব্যাকআপ রিটেনশন সময় পরিবর্তন করবে। এটি ডাটাবেস ব্যাকআপের কত দিন ধরে রাখা হবে তা নির্ধারণ করে।
boto3 ইনস্টল করা: boto3 SDK ইনস্টল করতে হবে, যা আপনি নিচের কমান্ড দিয়ে পিপ (pip) এর মাধ্যমে ইনস্টল করতে পারেন:
pip install boto3
AWS ক্রেডেনশিয়াল কনফিগারেশন: AWS CLI বা boto3 ব্যবহার করতে, আপনাকে আপনার AWS Access Key এবং Secret Access Key সেট করতে হবে। আপনি AWS CLI কনফিগারেশন কমান্ড ব্যবহার করে অথবা boto3
লাইব্রেরির মাধ্যমে এ কাজটি করতে পারেন:
aws configure
এই স্ক্রিপ্টগুলি Python boto3 SDK ব্যবহার করে RDS এর বিভিন্ন কার্যক্রম অটোমেট করতে সহায়তা করে, যেমন ডাটাবেস তৈরি, স্ট্যাটাস চেক, ব্যাকআপ তৈরি, স্কেলিং, Read Replica তৈরি এবং ইন্সট্যান্স মডিফাই করা। RDS অটোমেশন আপনার ডাটাবেস ম্যানেজমেন্ট অনেক সহজ এবং সময় সাশ্রয়ী করে তোলে।
AWS CloudFormation দিয়ে RDS ডেপ্লয়মেন্ট একটি শক্তিশালী পদ্ধতি, যা আপনাকে Amazon RDS ইনস্ট্যান্সের স্থাপন এবং কনফিগারেশন স্বয়ংক্রিয়ভাবে পরিচালনা করতে সাহায্য করে। CloudFormation এর মাধ্যমে আপনি আপনার RDS ইনস্ট্যান্সের জন্য প্রয়োজনীয় সম্পদগুলো (যেমন VPC, Subnets, Security Groups, RDS ইন্সট্যান্স) কনফিগারেশনসহ সম্পূর্ণ স্ট্যাক হিসেবে তৈরি এবং ডেপ্লয় করতে পারেন।
AWS CloudFormation দিয়ে RDS ডেপ্লয় করতে, আপনাকে একটি CloudFormation টেমপ্লেট তৈরি করতে হবে। এটি একটি YAML বা JSON ফাইল, যা RDS ইনস্ট্যান্সসহ অন্যান্য AWS রিসোর্স কনফিগারেশনের নির্দেশনা ধারণ করে।
এখানে একটি সাধারণ CloudFormation YAML টেমপ্লেট দেওয়া হলো, যা একটি RDS MySQL ইনস্ট্যান্স তৈরি করবে।
AWSTemplateFormatVersion: '2010-09-09'
Resources:
MyRDSTemplate:
Type: AWS::RDS::DBInstance
Properties:
DBInstanceIdentifier: my-database
AllocatedStorage: 20
DBInstanceClass: db.t3.micro
Engine: MySQL
EngineVersion: '8.0.23'
MasterUsername: admin
MasterUserPassword: !Ref DBPassword
VPCSecurityGroups:
- !Ref MySecurityGroup
DBName: mydb
MultiAZ: false
StorageType: gp2
BackupRetentionPeriod: 7
PubliclyAccessible: true
Tags:
- Key: Name
Value: MyDatabaseInstance
MySecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupDescription: Enable MySQL access
SecurityGroupIngress:
- IpProtocol: tcp
FromPort: '3306'
ToPort: '3306'
CidrIp: '0.0.0.0/0'
DBPassword:
Type: AWS::SecretsManager::Secret
Properties:
Name: MyDBPassword
SecretString: '{"username":"admin","password":"mypassword"}'
AWS::RDS::DBInstance
: এই রিসোর্সটি MySQL ডাটাবেস ইনস্ট্যান্স তৈরি করবে।DBInstanceClass
: RDS ইন্সট্যান্সের পারফরম্যান্স ক্লাস নির্বাচন করা হয়েছে (এখানে db.t3.micro
)।Engine
: ডাটাবেস ইঞ্জিন (এখানে MySQL) নির্বাচন করা হয়েছে।MasterUsername
এবং MasterUserPassword
: ডাটাবেস অ্যাডমিন ইউজারনেম এবং পাসওয়ার্ড।VPCSecurityGroups
: নিরাপত্তা গ্রুপ সংযুক্ত করা হয়েছে।PubliclyAccessible
: এটি পাবলিক অ্যাক্সেসযোগ্য কনফিগার করেছে।AWS::EC2::SecurityGroup
: MySQL পোর্ট (3306) খুলে দেওয়া হয়েছে, যাতে ডাটাবেসে পাবলিক অ্যাক্সেস পাওয়া যায়।AWS::SecretsManager::Secret
: ডাটাবেস পাসওয়ার্ড সুরক্ষিতভাবে Secrets Manager থেকে পরিচালনা করা হচ্ছে।MyRDSStack
) এবং প্রয়োজনীয় কনফিগারেশন নিশ্চিত করুন (যেমন প্যারামিটারস, ট্যাগস ইত্যাদি)।CloudFormation স্ট্যাকটি আপনার ডাটাবেস ইনস্ট্যান্স এবং অন্যান্য রিসোর্স তৈরি করতে শুরু করবে।
CloudFormation স্ট্যাক সফলভাবে ডিপ্লয় হলে, আপনি আপনার ডাটাবেসের Endpoint এবং Port দেখতে পারবেন এবং Security Group এর মাধ্যমে ডাটাবেসে অ্যাক্সেস করতে পারবেন।
CloudFormation স্ট্যাকটি সঠিকভাবে কাজ করছে কিনা তা পরীক্ষা করতে:
AWS CloudFormation আপনার ইনফ্রাস্ট্রাকচারকে কোড হিসেবে পরিচালনা করার জন্য একটি শক্তিশালী টুল, যা RDS ডেপ্লয়মেন্টসহ অন্য সকল রিসোর্স ম্যানেজমেন্ট স্বয়ংক্রিয়ভাবে করতে সক্ষম।